#pragma once
#include <action\Action.h>
#include <action\BasicMenuAction.h>
#include "..\GameCore.h"

// ---------------------------------------------------
//  Main menu
// ---------------------------------------------------
class MainMenuAction : public ds::BasicMenuAction {

public:
	MainMenuAction(const std::string& materialName,const std::string& layerName,GameCore* core);
	virtual ~MainMenuAction() {}	
	virtual void onMouseOver( int id );
	virtual void onMouseOut( int id );
	virtual void onClicked( int id );
private:
	GameCore* m_Core;
};

// ---------------------------------------------------
//  Credits menu
// ---------------------------------------------------
class CreditsMenuAction : public ds::BasicMenuAction {

public:
	CreditsMenuAction(const std::string& materialName,const std::string& layerName,GameCore* core);
	virtual ~CreditsMenuAction() {}	
	virtual void onMouseOver(int id);
	virtual void onMouseOut(int id);
	virtual void onClicked(int id) {}
private:
	GameCore* m_Core;
};

// ---------------------------------------------------
//  Level menu
// ---------------------------------------------------
class LevelMenuAction : public ds::BasicMenuAction {

public:
	LevelMenuAction(const std::string& materialName,const std::string& layerName,GameCore* core);
	virtual ~LevelMenuAction() {}	
	virtual void onMouseOver(int id);
	virtual void onMouseOut(int id);
	virtual void onClicked(int id);
private:
	GameCore* m_Core;
};

// ---------------------------------------------------
//  Time menu
// ---------------------------------------------------
class TimeMenuAction : public ds::BasicMenuAction {

public:
	TimeMenuAction(const std::string& materialName,const std::string& layerName,GameCore* core);
	virtual ~TimeMenuAction() {}	
	virtual void onMouseOver(int id);
	virtual void onMouseOut(int id);
	virtual void onClicked(int id);
private:
	GameCore* m_Core;
};

// ---------------------------------------------------
//  Game over menu
// ---------------------------------------------------
class GameOverMenuAction : public ds::BasicMenuAction {

public:
	GameOverMenuAction(const std::string& materialName,const std::string& layerName,GameCore* core);
	virtual ~GameOverMenuAction() {}	
	virtual void onMouseOver(int id);
	virtual void onMouseOut(int id);
	virtual void onClicked(int id);
	virtual void start();
private:
	GameCore* m_Core;
	int m_PointsIdx;
	int m_CoverageIdx;
	int m_LevelIdx;
};